# -*- coding: utf-8 -*-
# created by Src - 一路好时光

# 1.7 练习题：学籍注册程序
# 需求：
# 1. 要求⽤户输⼊姓名、年龄、⼿机号、身份证号、所选课程，然后为学员完成注册
# 2. ⼿机号、身份证号唯⼀
# 3. 可选的课程只能从Python、Linux、⽹络安全、前端、数据分析 这⼏⻔⾥选
# 4. 学员信息存⼊⽂件


#思路
#1.数据存到文件里的格式
# 姓名,年龄,手机,身份证,学科
#2.要确保手机、身份证，在文件里同样的数据只有一条
# 可以文件里以列表形式存放。用户一输入相关列，就到列表里检查有没有重复
#3.先学科时，给用户列出来选项，供选择

db_file="student_data.db"

def validate_phone(num):
    if not num.isdigit():
        exit("手机号必须是数字")
    if len(num) != 11:
        exit("手机号必须达到11位")
    return True
def register_api():
    stu_data={}
    print("欢迎来到时宇学院".center(50,"-"))
    print("请完成学籍注册".center(50,"-"))
    name=input("姓名：").strip()
    age=input("年龄：").strip()
    phone=input("手机号：").strip()
    if phone in phone_list:
        exit("该手机已注册.")
    validate_phone(phone)

    id_num=input("身份证号：").strip()
    if id_num in id_num_list:
        exit("该身份证号已注册.")
    course_list=["Python","C++","Java","PHP","Ruby"]
    for index,course in enumerate(course_list):
        print(f"{index}. {course}")

    selected_course = input("选择想学的课：")
    if selected_course.isdigit():
        selected_course = int(selected_course)
        if selected_course >=0 and selected_course <= len(course_list):#合法选项
            picked_course = course_list[selected_course]#选中的课程
        else:
            exit("不合法的选项...")
    else:
        exit("非法输入...")

    stu_data["name"]=name
    stu_data["age"]=age
    stu_data["phone"]=phone
    stu_data["id_num"]=id_num
    stu_data["course"]=picked_course
    return stu_data

def commit_to_db(filename,stu_data):
    """
    把学员数据，存储到文件里
    :param filename: 学员数据库文件名
    :param stu_data: 单个学员数据的dict
    :return:
    """
    f=open(filename,"a")
    row=f"{stu_data['name']},{stu_data['age']},{stu_data['phone']},{stu_data['id_num']},{stu_data['course']}\n"
    f.write(row)
    f.close()

def load_validated_data(filename):
    f=open(filename,"r")
    phone_list =[]
    id_num_list =[]
    for line in f:
        line=line.strip().split(",")
        phone = line[2]
        id_num = line[3]
        phone_list.append(phone)
        id_num_list.append(id_num)
    return phone_list,id_num_list

phone_list,id_num_list=load_validated_data(db_file)

student_data=register_api()
print(student_data)

commit_to_db(db_file,student_data)

# ---------------------欢迎来到时宇学院---------------------
# ---------------------请完成学籍注册----------------------
# 姓名：22
# 年龄：22
# 手机号：22
# 身份证号：22
# 1. Python
# 2. C++
# 3. Java
# 4. PHP
# 5. Ruby
# 选择想学的课：4
# {'name': '22', 'age': '22', 'phone': '22', 'id_num': '22', 'course': 'Ruby'}


a,b=4,5
print(a,b)
#a=4
#b=5
